/********************************************************************
	TABAL ENGINE - 2012/10/29
	author:		Marc Cuscullola
	
	purpose:	Defines the core of the engine
*********************************************************************/
#pragma once

#ifndef __CORE__CORE__INCLUDED_H__
#define __CORE__CORE__INCLUDED_H__

#include <Windows.h>
#include "Singleton/Singleton.h"

#define CORE CCore::GetSingletonPtr()

class CCamera;
class CRenderManager;
class CInputManager;
class CStaticMeshManager;
class CTextureManager;

class CCore : public CSingleton<CCore>
{
public:
	CCore();
	~CCore();

	void	Initialize	(HWND _hWnd);
	void	Update		(float _fElapsedTime);
	void	Render		();

	inline void			SetCamera	(CCamera* _pCamera);

private:
	CCamera*			m_pCamera;

	CRenderManager*		m_pRenderManager;
	CInputManager*		m_pInputManager;
	CStaticMeshManager*	m_pStaticMeshManager;
	CTextureManager*	m_pTextureManager;
};

#include "Core.inl"

#endif //__CORE__CORE__INCLUDED_H__
